#!usr/bin/env python3
# -*- coding:utf-8 -*-

#第四章 文本与字节序列

#编码解码

s = "café"
bs = s.encode('utf8')
print(bs,len(bs))

cafe = bytes("café",encoding='utf8')
print(cafe,cafe[1]) # cafe[1] 返回的是字符unicode编码

#bytes切片 返回的是bytes对象 
print(cafe[0:2])

cafe_arr = bytearray(cafe)
print(cafe_arr,cafe_arr[0]) # cafe_arr[0] 依然是返回Unicode编码
print("你好 %s %d" % ('hello',114))

bhex = bytes.fromhex('31 4B CE A9') # 把16进制的数字对解析成二进制序列
print(bhex)

print(bytes([97,98,99,100]).decode('utf8')) # 通过传不同的参数给构造函数 组成二进制序列

cnTxt = "hello你好"
bcn = cnTxt.encode("utf8")
#print(bcn.decode('ascii')) # 因为原串包含中文 而ascii不能对中文进行解码 所有报错了;
print(bcn.decode('ascii',errors="replace")) # 对于不能解码的字符串执行替换方案 不能解码的会被用?替换;

'''

Python 3 默认使用UTF-8 编码源码，Python 2（从2.5 开始）则默认使用ASCII。如果加载
的.py 模块中包含UTF-8 之外的数据，而且没有声明编码，会得到类似下面的消息：
SyntaxError: Non-UTF-8 code starting with '\xe1' in file ola.py on line
1, but no encoding declared; see http://python.org/dev/peps/pep-0263/
for details

'''

import os,sys
print(os.path.split(__file__))
print(sys.stdout.encoding)
